package com.ruoyi.system.mapper;

import com.ruoyi.system.domain.JingfeiDept;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 经费管理Mapper接口
 * 
 * @author ruoyi
 * @date 2023-04-10
 */
@Mapper
public interface JingfeiDeptMapper 
{
    /**
     * 查询经费管理
     * 
     * @param id 经费管理主键
     * @return 经费管理
     */
    public JingfeiDept selectJingfeiDeptById(String id);

    /**
     * 查询经费管理列表
     * 
     * @param jingfeiDept 经费管理
     * @return 经费管理集合
     */
    public List<JingfeiDept> selectJingfeiDeptList(JingfeiDept jingfeiDept);

    /**
     * 新增经费管理
     * 
     * @param jingfeiDept 经费管理
     * @return 结果
     */
    public int insertJingfeiDept(JingfeiDept jingfeiDept);

    /**
     * 修改经费管理
     * 
     * @param jingfeiDept 经费管理
     * @return 结果
     */
    public int updateJingfeiDept(JingfeiDept jingfeiDept);

    /**
     * 删除经费管理
     * 
     * @param id 经费管理主键
     * @return 结果
     */
    public int deleteJingfeiDeptById(String id);

    /**
     * 批量删除经费管理
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteJingfeiDeptByIds(String[] ids);

    /**
     * 根据经费批次ID和单位ID查询单位经费
     * @param jinfeipiciId
     * @param deptId
     * @return
     */
    JingfeiDept selectJingfeiDeptByJingfeipiciIdAndDeptId(@Param("jinfeipiciId") String jinfeipiciId, @Param("deptId") String deptId);

    /**
     * 根据专家ID和经费批次ID查询单位经费信息
     * @param deptId 单位ID
     * @param jingfeipiciId 经费批次经费ID
     * @return
     */
    JingfeiDept selectAllByDeptIdAndJingfeipiciId(@Param("deptId") String deptId, @Param("jingfeipiciId") String jingfeipiciId);

    /**
     * 查询单位未发放经费次数
     * @param deptId
     * @return
     */
    int selectNotFafangCountByDeptId(String deptId);

    /**
     * 查询单位的批次
     * @param deptId
     * @param picimingcheng
     * @return
     */
    List<Map<String, Object>> selectDeptPiciByDeptid(@Param("deptId")String deptId, @Param("picimingcheng")String picimingcheng);

    /**
     * 通过经费批次ID和单位ID修改是否收到
     * @param jingfeipiciId 经费批次ID
     * @param deptId 单位ID
     * @return
     */
    int updateIsshoudaoByJingfeipiciidAndDeptid(@Param("jingfeipiciId") String jingfeipiciId, @Param("deptId") String deptId);

    /**
     * 通过经费批次ID和单位ID修改是否发放
     * @param jingfeipiciId 经费批次ID
     * @param deptId 单位ID
     * @return
     */
    int updateIsfafangByJingfeipiciidAndDeptid(@Param("jingfeipiciId") String jingfeipiciId, @Param("deptId") String deptId);

    /**
     * 查询deptIds数组中的所有jingfeiDept
     * @param deptIds
     * @param jingfeipiciId
     * @return
     */
    List<JingfeiDept> selectAllByDeptIdsAndJingfeipiciId(@Param("deptIds") String[] deptIds, @Param("jingfeipiciId") String jingfeipiciId);

    List<JingfeiDept> selectAllByJingfeipiciid(@Param("jingfeipiciId") String jinfeipiciId, @Param("isfafang") int isfafang);

    /**
     * 查询给定时间内单位jingfeidept的数量。目前用作判断上级单位有没有发放本单位经费
     * @param deptId
     * @param kaishishsijian
     * @param jieshushijian
     * @return
     */
    int selectCountByDeptIdAndBetweenBeizhu1AndBeizhu2(@Param("deptId") String deptId,
                                                                     @Param("kaishishijian") String kaishishsijian,
                                                                     @Param("jieshushijian") String jieshushijian);

    List<Map<String,Object>> selectXiajiyiByPiciIdAndDeptId(@Param("jingfeipiciid") String PiciId,
                                                       @Param("deptid") String ppDeptId);
}
